package com.rainbow.idempotent.storage;

import org.springframework.beans.factory.annotation.Autowired;

import com.rainbow.idempotent.enums.IdempotentStorageTypeEnum;

import lombok.extern.slf4j.Slf4j;

import java.util.List;
import java.util.Optional;

/**
 * 存储的接口的工厂类
 */
@Slf4j
public class IdempotentStorageFactory {

    @Autowired
    private List<IdempotentStorage> idempotentStorageList;

    public IdempotentStorage getIdempotentStorage(IdempotentStorageTypeEnum type) {
        Optional<IdempotentStorage> idempotentStorageOptional = idempotentStorageList.stream().filter(t -> t.type() == type).findAny();
        if (!idempotentStorageOptional.isPresent()) {
			log.error("IdempotentStorage接口实现为null：{}",type.name());
			return null;
		}
        return idempotentStorageOptional.get();
    }

}
